<?php

namespace frontend\models;

use Yii;
use yii\behaviors\TimestampBehavior;
use yii\db\ActiveRecord;

/**
 * This is the model class for table "smslimit".
 *
 * @property integer $tel
 * @property string $times
 * @property string $created_at
 * @property string $updated_at
 */
class Smslimit extends ActiveRecord
{
    public function behaviors()
    {
        return [
            'time'=>[
                'class'=> TimestampBehavior::className(),
                'createdAtAttribute' => 'created_at',
                'updatedAtAttribute' => 'updated_at',
            ]
        ];
    }
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'smslimit';
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['times', 'created_at', 'updated_at','tel'], 'integer'],
        ];
    }

    /** 验证手机号码是否允许发送短信，同时更新记录 */
    public function validateTel(){
        //验证手机号码是否符合要求
            if(strlen($this->tel) !=11){
                $this->addError('tel','手机号码不符合要求');
                return false;
            }
        //时间是否为今天（time()-3600*24>created_at ） 如果不是，则允许发送
            //小于，表示不是今天
            if($this->created_at < (time()-3600*24)){
                //更新数据
                $this->times = 1;
                $this->created_at = time();
                $this->updated_at = time();
                $this->save();
                return true;
            }
        //如果是，判断更新时间是否已经过去30 秒 （time()-30 > updated_at ） 不是，不允许发送
            //不足30秒，不允许发送
            if($this->updated_at > (time()-30)){
                $this->addError('updated_at','短信发送太频繁，请稍后---');
                return false;
            }
        //如果是，判断短信发送次数是否小于5 小于5 允许发送
            //var_dump($this->times<5);exit;
            if((integer)($this->times)<5){
                $this->updated_at = time();
                $this->times = 1+ (integer)($this->times);
                $this->save();
                //var_dump($this);exit;
                return true;
            }else{
                $this->addError('times','你当天发送次数已达上限，禁止发送！');
                return false;
            }

    }
    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'tel' => '手机号码',
            'times' => '短信的发送次数',
            'created_at' => '记录创建的时间',
            'updated_at' => '记录创建的时间',
        ];
    }


    /**
     * @param $tel integer
     * @return $this
     */
    public static  function getsmsObj($tel){
        $smsobj = self::findOne(['tel'=>$tel]);
        //如果为空，则表示没有记录信息，则创建一个
        if($smsobj == null){
            $smsobj = new Smslimit();
            $smsobj->tel =$tel;
            $smsobj->created_at = 0;
            $smsobj->updated_at= 0;
            $smsobj->times = 0;
        }

        return $smsobj;
    }


}
